package com.ruoyi.system.mapper.fx;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.system.domain.dto.FxOrderDto;
import com.ruoyi.system.domain.fx.FxOrder;
import com.ruoyi.system.domain.vo.FxOrderVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 订单Mapper接口
 *
 * @author ruoyi
 * @date 2024-07-23
 */
public interface FxOrderMapper extends BaseMapper<FxOrder> {
    /**
     * 查询订单
     *
     * @param id 订单主键
     * @return 订单
     */
    public FxOrder selectFxOrderById(String id);

    /**
     * 查询订单列表
     *
     * @param fxOrder 订单
     * @return 订单集合
     */
    public List<FxOrder> selectFxOrderList(FxOrder fxOrder);

    /**
     * 查询订单列表（该用户的全部订单包含店铺或自己订单）
     * @param fxOrder
     * @return
     */
    List<FxOrderVo> selectOrderList(FxOrder fxOrder);

    /**
     * 查询全部订单
     * @param search 搜索框
     * @param createTime 日期
     * @param orderStatus 订单状态
     * @return
     */
//    List<FxOrder> selectAllBySearchAndCreateTime(@Param("search") String search, @Param("createTime") String createTime , @Param("orderStatus") Long orderStatus);
    List<FxOrder> selectAllBySearchAndCreateTime(FxOrder fxOrder);

    /**
     * 查询门店总额度
     * @param storeId 门店id
     * @param orderStatus 订单状态
     * @param orderType 订单类型(1店铺，2用户)
     * @return
     */
    String selectStoreTotalMoney(@Param("storeId") Long storeId , @Param("orderStatus") Integer[] orderStatus, @Param("orderType") Integer orderType);

    /**
     * 新增订单
     *
     * @param fxOrder 订单
     * @return 结果
     */
    public int insertFxOrder(FxOrderDto fxOrder);

    /**
     * 修改订单
     *
     * @param fxOrder 订单
     * @return 结果
     */
    public int updateFxOrder(FxOrder fxOrder);

    int updateStatusByIds(@Param("ids") Long[] ids, @Param("delFlag") Integer isDelete);

    /**
     * 删除订单
     *
     * @param id 订单主键
     * @return 结果
     */
    public int deleteFxOrderById(Long id);

    /**
     * 批量删除订单
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteFxOrderByIds(Long[] ids);

    List<FxOrder> orderStatistics(Long storeId);


    List<FxOrder> completeTheOrder(Long storeId);


    List<FxOrderVo> selectOrderLists(@Param("fxOrder") FxOrder fxOrder,@Param("startTime") String startTime,@Param("endTime") String endTime);
}
